<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
		<script type="text/javascript">
			// 1.字面量
			// 其实就是一个值，含义就是字面上的意思，也就是等号右边的值
			// console.log(1,'hello',) a不行，a是一个变量


			// 2.变量
			// ’可以变化的量，从开发的角度来看，变量就是存储数据的容器
			// 怎么声明一个变量 ？ var + 变量名
			// ① 声明变量
			var a;
			console.log(a)

			// ② 赋值
			a = 10
			console.log(a)
			// 10

			//③ 变量的初始化
			var s = 100
			console.log(s)

			// ④ 变量的重新赋值
			s = 50
			console.log(s)

			// ⑤ 一次声明多个变量
			var m = 6,n = 8
			console.log(m, n)
			
			// ⑥变量不声明去使用，会报错
			// console.log(c)
			// c is not defind

			// ⑦变量的提升
			console.log(x) // undefined
			var x ="哈哈"
			console.log(x) //哈哈

			 //=====>
			var x; //变量的声明提升
			console.log(x)
			x = "哈哈" //赋值不提升
			console.log(x)

			/*
				变量声明的提升，简称变量的提升
				在es6以前的版本，js可以先使用变量，在定义变量，不会报错

				js是解释性语言，边解析边执行。但是在浏览器解析之前，会有一个预解析或者预处理的过程

				----预解析的过程：
					对当前js定义的所以的变量（和函数），放到所有代码的最前面

					var a = 10;
					var b = 20;
					var c = 30;

					=========预解析：只提升声明，不提升赋值
					var a;
					var b;
					varc;
					
					a = 10；
					b = 20；
					c = 30；

					*/
		</script>
</body>
</html>